# main.py

from contextlib import asynccontextmanager

import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

# 导入你的业务路由和调度器启动/停止函数
from routers import case_router, variables_router, scheduled_tasks_routes
from routers.scheduled_tasks_routes import start_scheduler, stop_scheduler


# ---------------------------- 应用生命周期管理 ----------------------------
@asynccontextmanager
async def lifespan(app: FastAPI):
    """
    FastAPI lifespan 管理器：
      - 应用启动前执行 start_scheduler()
      - 应用关闭后执行 stop_scheduler()
    """
    # 启动时初始化并启动调度器，加载所有启用任务
    start_scheduler()
    yield
    # 关闭时优雅停止调度器
    stop_scheduler()


app = FastAPI(lifespan=lifespan)

# ---------------------------- 注册路由 ----------------------------
# 你的业务路由都挂载到 /api/v1 下
app.include_router(case_router.router, prefix="/api/v1")
app.include_router(variables_router.router, prefix="/api/v1")
app.include_router(scheduled_tasks_routes.router, prefix="/api/v1")

# ---------------------------- 跨域配置 ----------------------------
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许的源
    allow_credentials=True,
    allow_methods=["*"],  # 允许所有方法
    allow_headers=["*"],  # 允许所有头部
)

# ---------------------------- 启动入口 ----------------------------
if __name__ == "__main__":
    # 启动 Uvicorn ASGI 服务器
    uvicorn.run(
        app,
        # host="192.168.1.8",  # 绑定的 IP 地址
        host="192.168.31.107",  # 绑定的 IP 地址
        port=8088,  # 监听的端口

    )
